/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.internal.themes; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.StringConverter; import org.eclipse.swt.graphics.FontData; import org.eclipse.ui.PlatformUI; /** * The FontDefiniton is the representation of the fontDefinition * from the plugin.xml of a type. */ public class FontDefinition implements IHierarchalThemeElementDefinition, ICategorizedThemeElementDefinition, IEditable { private String label; private String id; private String defaultsTo; private String categoryId; private String description; private String value; private boolean isEditable; private FontData[] parsedValue; /** * Create a new instance of the receiver. * * @param fontName The name display * ed in the preference page. * @param uniqueId The id used to refer to this definition. * @param defaultsId The id of the font this defaults to. * @param fontDescription The description of the font in the preference page. */ public FontDefinition(String fontName, String uniqueId, String defaultsId, String value, String categoryId, boolean isEditable, String fontDescription) { this.label = fontName; this.id = uniqueId; this.defaultsTo = defaultsId; this.value = value; this.categoryId = categoryId; this.description = fontDescription; this.isEditable = isEditable; } /** * Create a new instance of the receiver. * * @param originalFont the original definition. This will be used to populate * all fields except defaultsTo and value. defaultsTo will always be * <code>null</code>. * @param datas the FontData[] value */ public FontDefinition(FontDefinition originalFont, FontData[] datas) { this.label = originalFont.getName(); this.id = originalFont.getId(); this.categoryId = originalFont.getCategoryId(); this.description = originalFont.getDescription(); this.isEditable = originalFont.isEditable(); this.parsedValue = datas; } /** * Returns the defaultsTo. This is the id of the text font * that this font defualts to. * @return String or <pre>null</pre>. */ public String getDefaultsTo() { return defaultsTo; } /** * Returns the description. * @return String or <pre>null</pre>. */ public String getDescription() { return description; } /** * Returns the label. * @return String */ public String getName() { return label; } /** * Returns the id. * @return String */ public String getId() { return id; } /** * Returns the categoryId. * @return String */ public String getCategoryId() { return categoryId; } /** * Returns the value. * * @return FontData [] */ public FontData[] getValue() { if (value == null) { return null; } if (parsedValue == null) { parsedValue = JFaceResources.getFontRegistry().filterData( StringConverter.asFontDataArray(value), PlatformUI.getWorkbench().getDisplay()); } return parsedValue; } /* (non-Javadoc) * @see org.eclipse.ui.internal.themes.IEditable#isEditable() */ public boolean isEditable() { return isEditable; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if (obj instanceof FontDefinition) { return getId().equals(((FontDefinition)obj).getId()); } return false; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ public int hashCode() { return id.hashCode(); } }